The invention relates to updating the data stored in a block of memory by sending the new data over a local area network (LAN)or other connection. More particularly, the invention relates to updating a data block which is larger than the size of the available unused portion of a second memory.
Individual computers or processors are frequently interconnected using a local area network (LAN) so that data from one processor can be rapidly requested from or sent to another processor which is attached to the same LAN. A LAN connection typically operates at a higher speed than some other connections such as a telephone line dial-up modem. Because a LAN is always connected, the time required for dial up of an initial connection using a modem is eliminated. Other connections including a Point-to-Point Protocol (PPP) or Serial Line Information Protocol (SLIP) may also be used for transferring data.
For two or more computers to be connected via a LAN, each must have a LAN port connected to a cable routed between the respective LAN ports. Examples of LAN types currently in use are the ETHERNET(copyright) LAN and the TOKEN RING(copyright) LAN. (TOKEN RING is a registered trademark of International Business Machines Corporation.)
In addition to requesting and transferring data, a LAN may be used to transfer program code. The data and/or code may also be compressed before transmission across a LAN and subsequently decompressed after reception at the receiving computer. Various compression methods have been developed for this and other purposes such as run length encoding, Huffman coding and Lempel Ziv coding. After reception and both before and after decompression, the received data is stored in some type of memory or storage device. The memory may be RAM memory, ROM memory, EPROM, EEPROM or flash memory. Storage devices include a hard or floppy drive. A flash memory may also be configured to emulate a disk drive as described by Clay et al. in U.S. Pat. No. 5,459,850. Wadsworth et al. in U.S. Pat. No. 5,701,492 describe a EPROM arranged into separately erasable sectors.
Miller et al. in U.S. Pat. No. 5,237,460 describe a method of storing compressed and uncompressed data on a hard disk or semiconductor memory having multiple partitions of varying block size. Pattisam et al. in U.S. Pat. No. 5,357,614 describe data compression between compression and decompression storage in RAM using a coprocessor. A main processor CPU intervenes periodically to transfer the data e.g. to or from a tape drive, as the capacity of the compression and decompression storage becomes filled.
Nakashima et al. in U.S. Pat. No. 5,673,392 describe storing a plurality of communication programs after being compressed. A program, e.g. program code, to be executed is decompressed in a work area in a RAM memory and then stored in a ROM memory from which it may then be executed.
Lindholm et al. in U.S. Pat. No. 5,765,157 describe compressing and decompressing the execution data (code) of a plurality of threads of execution as needed. As a result more space is made available in the run time memory.
While use of a LAN connection with or without data compressing and decompressing can provide a rapid transfer of data and program code, other factors may inhibit or prevent loading and execution of code transfers. For example, on some specialized systems, an operating program may be running from a flash memory of limited size. Operating RAM space may also be limited. The operating program must be running Transmission Control Protocol/Internet Protocol (TCP/IP) code and network interface code to receive the code update, however because of these limitations it may be impossible to perform the receive and update process without stopping the system and manually loading the update from some other external device. Use of a PPP or SLIP connection also requires that the operating program be running TCP/IP code which occupies RAM space.
In accordance with the present invention, there is defined a new method and system for updating a block of program code over a LAN or other connection for systems which have unused memory which is smaller than the block of code. It is believed that such a method and system would constitute a significant advancement in the art.
It is therefore, a principal object of the present invention to enhance the code update art by providing a system with improved update capability.
It is another object to provide such a system having a high speed transfer rate and update without stopping the system.
Another object of the invention is to provide a method of performing a code update in a system with limited memory capacity.
These and other objects are attained in accordance with one embodiment of the invention wherein there is provided a method of updating over a LAN or other connection, a block of data stored in a first memory of a device having first and second memories, the second memory having an unused size smaller than the block of data, at least one of the memories being a non-volatile memory, with new data, comprising the steps of receiving across a connection, new data compressed by a client processor, receiving control data over the connection to the non-volatile memory of the device, resetting the device, erasing the block of data stored in the first memory, and in response to the control data, uncompressing the compressed new data into uncompressed data increments each smaller than the unused size of the second memory and writing the uncompressed data increments to the first memory.
In accordance with another embodiment there is provided a computer system for updating over a LAN or other connection, a block of data stored in a first memory of a device having the first memory and a second memory with the second memory having an unused size smaller than the block of data, at least one of the memories being a non-volatile memory, with new data comprising a client processor having the new data, a connection, a data compressor for compressing the new data into compressed new data and control data, means for transferring the compressed new data over the LAN to the second memory of the device, means for transferring the control data over the connection to the non-volative memory of the device, means for resetting the device, means for erasing the first memory, and means for uncompressing, in response to the control data, the compressed new data into uncompressed data increments, each smaller than the unused size of the second memory and writing the uncompressed data increments to the first memory.